1. Field of the Invention
This invention relates to information-sharing systems and, more particularly, to methods for providing event-driven communication systems.
2. History of the Prior Art
In computer systems, information may be shared in various ways. Information may be placed in a file, and users may share that file; information may be placed in a database, and users may share the information in the database. Such operations are sometimes referred to as resource-based operations because it is necessary for a user to obtain the information by accessing the resource which stores the information and obtaining whatever is needed. Information may also be shared through communications-based operations. Users may communicate a demand for information to an information source which utilizes a program to obtain and furnish the desired information to the user. Alternatively, information sources may publish information which may be utilized by subscribers which connect to a channel carrying the information.
All of these forms of information transfer are useful, but only the first three have been widely used. Each of these first three forms of information transfer poses certain problems which complicate its use. Any sort of resource-based communication requires that a user know what information it desires, know when it desires the information, be able to establish a connection to the source of information, and be able to retrieve the information. Often a user does not know that new information exists and sometimes only acquires knowledge of its existence after its value has diminished. Establishing a connection is often quite difficult, especially when the computer systems of the user and the source differ, because it requires a knowledge of esoteric formats and interconnection protocols. Retrieving information also requires that the user establish a complete one-to-one connection with the data resource, a requirement which increases network loading. A demand-based communication has most of the same problems although it may provide information which a user does not know exists.
Communications in which data regarding events are published to subscribers in response to the occurrence of the events (event-driven or publish-subscribe communications) are able to resolve these problems and are, consequently, very attractive for many purposes. Event-driven communications are especially useful, for example, where timely information dissemination is required, where notice of changes or status must constantly occur, where real time information monitoring and real time decisions are required, and in many other situations. In all of these situations it is necessary for a user in a resource or demand-based communication system to know of the occurrence of an event in order to access a resource or to demand the information desired. Even though especially attractive for many purposes, event-driven communications have found much less use than the other forms of communication.
Typically, when discussing event-driven or publish-subscribe communications, the term xe2x80x9cpublisherxe2x80x9d is used to describe a software program that sends information to a communication channel; and the term xe2x80x9csubscriberxe2x80x9d is used to describe any type of software program (such as a business application running on a large computer or a GUI-based application running on a personal computer) that receives information from a communication channel. Event-driven communications offer a number of advantages in addition to providing essentially immediate data when an event creating the data occurs. Event-driven communications reduce traffic below the level typically required by resource-based or demand-driven communication systems. Unlike these systems, publication of data to subscribers requires no explicit action by a subscriber in order to receive the data. Moreover, a publication of data to subscribers requires only a single publication from a publishing source to a channel no matter how many subscribers are to receive the data. The resources provided to implement any individual channel take care of the delivery of data to the individual subscribers once the publication has been received by the channel. A failure by a publisher, of course, requires retransmission from the publisher; and any guaranteed level of delivery may require a retransmission if a subscriber fails to receive published data. However, the overall affect is a significant reduction in traffic and, consequently, in expense.
Another advantage of publish-subscribe communication systems is that they function with both multiple subscribers and multiple publishers. Thus, a channel may receive data from a number of publishers and make the data available to a plurality of subscribers.
Publish-subscribe communications are asynchronous and thus allow a publisher or a subscriber to be on-line as it desires. Thus, a failure of equipment used by a subscriber has no effect on the service. The publication by a publisher simply continues, and other subscribers desiring to do so remain on line with no indication that any other subscriber has left. This emphasizes another great advantage of a publish-subscribe communications service, the manner in which the individual publishers and subscribers are decoupled from one another. In theory, apart from system administrators, no publisher or subscriber need know that any other publisher or subscriber is publishing or receiving data on any publication channel.
Because of these and other advantages, much work has been done to implement event-driven communications utilizing the various data access protocols which exist to facilitate the transfer of data between disparate systems. For example, it order to utilize the advantages offered by object-based software, the Object Management Group (OMG) has published a xe2x80x9cCommon Object Request Broker: Architecture and Specificationxe2x80x9d (CORBA), Version 2, July 1995, which defines a number of protocols useful for establishing communications of various types including event-driven communications utilizing various software objects. The CORBA architecture defines a framework in which software objects from various systems can integrate. A CORBA naming service specification outlines protocols for naming objects in a scaleable fashion for global communication systems. A CORBA event service specification describes protocols which define objects that function as publication channels on which event-driven data may be carried, define the manner in which publishers may publish on those channels, and delineate how users may subscribe to such channels to obtain published information. By adhering to established data access protocols and the CORBA naming and event service protocols, it is possible to utilize object-based software to implement publish-subscribe communication systems which make it easy for a user to acquire data at a time when it is most useful. The use of these protocols allows the burden of overcoming interfacing problems and establishing communication channels to be transferred from the user and placed on the implementation of the channels. All that is needed once such a system is established is that a publisher and a subscriber agree on a format for the data being exchanged and little more. The user may ignore most of the interface requirements for establishing communication using prior art techniques and simply receive the data. The channels provide the resources for assuring that the various interfacing difficulties are overcome.
U.S. Pat. No. 5,187,787, Skeen et al, describes apparatus and methods for establishing one form of basic publish-subscribe information exchange between different processes where the information may be of different formats and processes may be running on different computers.
Even with all of its advantages and the extensive work which has been accomplished, publish-subscribe communication systems still pose a number of problems which have not been solved by the prior art. A general problem involves the various details of implementing such an event-driven communication system. Another major problem is that in prior art embodiments such as that described in the Skeen patent the publication of data to a large number of subscribers requires a very large channel fanout from some central publication source. In a wide geographic region such as a continent, such a fanout requires a very large amount of expensive physical equipment. To support unlimited access by a significant number of publishers and subscribers requires the facilities and switching capabilities normally associated with a large telephone system. Such facilities are obviously impractical to all but a very few organizations. For this reason, the numbers of channels available tend to be somewhat limited and the channels used to carry a multitude of varying information much of which may not be useful to, or even should be kept from, the majority of users.
It is desirable to eliminate the prior art need for large amounts of physical communication equipment in a wide geographic area to service a significant number of subscribers with data from a significant number of publishers.
It is also desirable to provide a publish-subscribe architecture by which an unlimited number of specialized channels may be furnished without a large cost in transmission equipment.
It is an object of the present invention to provide an improved publish-subscribe communications architecture.
This and other objects of the present invention are accomplished by a publish-subscribe communications system comprising a plurality of channels for transmitting data furnished by publishers of data to subscribers to data, each channel including means for accepting data published to the channel and furnishing the data accepted to subscribers to the channel, a channel including means for accepting data for transmission by the channel from another channel.
These and other features of the invention will be better understood by reference to the detailed description which follows taken together with the drawings in which like elements are referred to by like designations throughout the several views.